
const dateTools = {}
/**
 * 计算两个时间差距多少天
 * @param date1
 * @param date2
 * @returns {number}
 */
dateTools.countDown = function (date1, date2) {
  // var dateSpan,
  //   iDays
  date1 = dateTools.parseTime(date1).getTime()
  date2 = dateTools.parseTime(date2).getTime()
  return date2 - date1
}
/**
 * yyyy:MM:dd HH:mm:ss 转date
 * @param dateSTR
 * @returns {Date}
 */
dateTools.parseTime = function (dateSTR) {
  const str = dateSTR.replaceAll('-', '/')
  return new Date(str)
}
dateTools.intDayNow = function () {
  const intDay = new Date().Format('yyyyMMdd')
  return parseInt(intDay)
}
// 和今天当前时间差距
dateTools.countTodayDown = function (date) {
  const times = dateTools.countDown(date, dateTools.thisTime())
  const msg = dateTools.countDownTime(Math.abs(times))
  let res = ''
  if (times > 0) {
    res = `已到期 ${msg}`
  } else {
    res = `还差 ${msg}到期`
  }
  return res
}

dateTools.countDownTime = function (period) {
  var minuteLevelValue = 60 * 1000
  // var secondLevelValue = 1000
  let totalMin = Math.floor(period / minuteLevelValue) // 分钟
  let day = 0
  let hour = 0
  day = Math.floor(totalMin / (60 * 24))
  totalMin = totalMin % (60 * 24)
  hour = Math.floor(totalMin / 60)
  totalMin = totalMin % 60
  let msg = ''
  if (day > 0) {
    msg = day + msg + ' 天'
    if (hour > 0) msg = msg + hour + '小时'
    if (hour === 0 && totalMin > 0) msg = msg + '零'
    if (hour === 0 && totalMin === 0) return msg
    if (totalMin > 0) msg = msg + totalMin + '分钟'
    if (totalMin === 0) return msg
    return msg
  }
  if (hour > 0) {
    msg = msg + hour + '小时'
    if (totalMin > 0) msg = msg + totalMin + '分钟'
    if (totalMin === 0) return msg
    return msg
  }
  if (totalMin > 0) {
    return totalMin + '分钟'
  }
  return ''
}

// eslint-disable-next-line no-extend-native
Date.prototype.Format = function (fmt) { // author: meizz
  var o = {
    'M+': this.getMonth() + 1, // 月份
    'd+': this.getDate(), // 日
    'h+': this.getHours(), // 小时
    'm+': this.getMinutes(), // 分
    's+': this.getSeconds(), // 秒
    'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
    S: this.getMilliseconds() // 毫秒
  }
  if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length)) }
  for (var k in o) {
    if (new RegExp('(' + k + ')').test(fmt)) { fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length))) }
  }
  return fmt
}

dateTools.thisTime = function () {
  return new Date().Format('yyyy-MM-dd hh:mm:ss')
}

dateTools.nowIntTime = function () {
  return parseInt(new Date().Format('yyyyMMddhhmmss'))
}

export default dateTools
